
                    <p style="text-align:justify;"><span style="color:#000000;">开发者小李正在使用DevEco Studio开发一款面向HarmonyOS的应用，该应用需要在多种设备上表现出一致的稳定性和优秀的用户体验。为了确保高质量的发布，小李意识到需要实施一套全面的测试策略，覆盖代码的自动化测试和手动测试，还需要衡量代码的测试覆盖率，以确定测试的充分性。在DevEco Studio的测试框架下，以下描述中，哪些是正确的</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.无论选择Instrument Test还是Local Test，DevEco Studio均内置了详尽的测试报告功能，实时显示测试进度，且直接在IDE中可查看代码覆盖率报告，无需外部工具。</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">B.Local Test：测试用例位于test目录，无需设备或模拟器环境，直接在本地执行，专注于ArkTS语言，推荐适用于API版本11及以上的Hvigor工程，目前特别限于Stage模型，并不涵盖C/C++方法。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.DevEco Studio的测试框架提供测试用例执行能力，包含基础接口以编写和输出测试结果，鼓励用户创建易于维护的自动化测试脚本，并且统计代码覆盖率。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.Instrument Test：测试用例存储于项目的ohosTest目录，要求在HarmonyOS设备或模拟器上执行，兼容ArkTS与JS语言编写。</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">在大型软件工程中，一般会伴随着多团队开发，各团队开发自己的业务模块，最后再由集成交付团队集成到一起，下面哪些是大型应用模块化开发最佳实践</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">使用路由表进行模块间解耦。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">B.</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">一次上架多端部署。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">若多个模块依赖了不同版本的HAR，使用OHPM的overrides机制配置指定使用哪个版本的HAR，以减少包大小。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">避免用户首次下载应用耗时过长，及过多占用用户空间，不常用功能做成按需加载</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">如下ABC 3处手势，有机会执行的是哪几处？</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@Entry</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@Component</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">struct ListTest {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">scroller: Scroller = new Scroller()</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">scroller2: Scroller = new Scroller()</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">scroller3: Scroller = new Scroller()</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">private arr: number[] = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">private childRecognizer: GestureRecognizer = new GestureRecognizer()</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">private currentRecognizer: GestureRecognizer = new GestureRecognizer()</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">private lastOffset: number = 0</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">build() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Stack({ alignContent: Alignment.TopStart }) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Scroll(this.scroller) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Column() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Text("Scroll Area")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.width('90%')</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.height(150)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.backgroundColor(0xFFFFFF)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.borderRadius(15)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.fontSize(16)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.textAlign(TextAlign.Center)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.margin({ top: 10 })</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">List({ space: 20, initialIndex: 0 }) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">ForEach(this.arr, (item: number) =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">ListItem() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Text('' + item)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.width('100%').height(100).fontSize(16)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.backgroundColor(Color.Blue)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.textAlign(TextAlign.Center).borderRadius(10)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}, (item: string) =&gt; item)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.listDirection(Axis.Vertical) // 排列方向</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.scrollBar(BarState.Off)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.friction(0.6)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.divider({ strokeWidth: 2, color: 0xFFFFFF, startMargin: 20, endMargin: 20 }) // 每行之间的分界线</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.edgeEffect(EdgeEffect.None) // 边缘效果设置为Spring</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.height(1000)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.width('90%')</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.id("inner")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}.width('100%')</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.id("outer")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.height(600)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.scrollable(ScrollDirection.Vertical) // 滚动方向纵向</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.scrollBar(BarState.On) // 滚动条常驻显示</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.scrollBarColor(Color.Gray) // 滚动条颜色</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.scrollBarWidth(10) // 滚动条宽度</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.edgeEffect(EdgeEffect.None)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onScroll((xOffset: number, yOffset: number) =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">console.info(xOffset + ' ' + yOffset)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onScrollEdge((side: Edge) =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">console.info('To the edge')</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onScrollStop(() =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">console.info('Scroll Stop')</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">A .gesture(</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">TapGesture({ count: 2 })</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onAction((event: GestureEvent) =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">if (event) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.value = JSON.stringify(event.fingerList[0])</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">B .gesture(</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">PanGesture({PanDirection.Vertical})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onActionUpdate((event: GestureEvent)=&gt;{<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">console.log("zcb onActionUpdate event offsetY " + event.offsetY + " this.lastOffset " + this.lastOffset + " this.childRecognizer.getGestureState() " + this.childRecognizer.getState())</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">C .parallelGesture(</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">PanGesture({PanDirection.Vertical})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onActionUpdate((event: GestureEvent)=&gt;{<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">console.log("zcb onActionUpdate event offsetY " + event.offsetY + " this.lastOffset " + this.lastOffset + " this.childRecognizer.getGestureState() " + this.childRecognizer.getState())</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}.width('100%').height('100%').backgroundColor(0xDCDCDC)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">A.NA</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">B.C</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">C.B</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.A</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">下面关于混淆的描述正确的是</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.API 10及以上版本的Stage模型、编译模式为release时，默认开启代码混淆功能；默认的混淆功能仅会混淆函数参数和局部变量的名称。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">B.代码混淆已经被集成了到SDK中，可以在DevEco Studio中方便地使用。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.混淆支持ArkTS/TS/JS文件的混淆</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.针对工程源码的混淆可以降低工程被破解攻击的风险，缩短函数名、类名和属性名，减小应用的大小。</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">以下数据类型中，哪些是Sendable数据。</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">import { lang } from '@kit.ArkTS';</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">class C {}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">interface I extends lang.ISendable {}</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.interface I</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">B.number</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.string</span></p> 
<p style="text-align:left;"><span style="color:#000000;">D.class C</span></p> 
<p style="text-align:left;"><span style="background-color:#f7f8fc;"><span style="color:#2c2c36;">下面关于混淆规则描述正确的是</span></span></p> 
<p style="text-align:left;"><span style="background-color:#f7f8fc;"><span style="color:#2c2c36;">A.-keep-global-name [,identifiers,.]:指定想保留的属性名</span></span></p> 
<p style="text-align:left;"><span style="background-color:#f7f8fc;"><span style="color:#75bd42;">B.-keep-file-name [,identifiers,.]:指定要保留的文件/文件夹的名称</span></span></p> 
<p style="text-align:left;"><span style="background-color:#f7f8fc;"><span style="color:#2c2c36;">C.-keep-property-name [,identifiers,]:指定要保留的顶层作用域的名称</span></span></p> 
<p style="text-align:left;"><span style="background-color:#f7f8fc;"><span style="color:#75bd42;">D.-print-namecache filepath: 将名称缓存保存到指定的文件路径。</span></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">下面关于动态import描述正确的是</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.动态import根据入参是否为常量字符串分为常量动态import和变量动态import两种</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">B.常量动态import也必须配置runtimeOnly选项</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.HAR模块间只有变量动态import时可以进行模块解耦</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.动态导入import()是个异步接口，调用后将返回一个promise</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Code Linter针对ArkTS/TS代码进行最佳实践/编程规范方面的检查，最佳实践/编程规范方面的检查规则可以配置，针对codelinter的配置项一下哪些说法是正确的</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.ruleSet：配置检查使用的规则集，规则集支持一次导入多条规则。</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">B.ignore：配置无需检查的文件目录，其指定的目录或文件需使用相对路径格式，相对于code-linter.json5所在工程根目录，例如：build/**/*。</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">C.rules：可以基于ruleSet配置的规则集，新增额外规则项，但是无法修改ruleSet中规则默认配置</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">D.files：配置待检查的文件名单，如未指定目录，规则适用于所有文件，例如：[“**/*.ets”,”**/*.js”,”**/*.ts”]</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">依次点击A、B、C、D四个按钮，其中不会触发UI刷新的是：</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@Entry</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@Component</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">struct Index {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@State count: number = 0;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">@State @Watch('onValueChange') value: number = 50;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">onValueChange() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count = this.value;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">build() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Column() {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Text(`${this.count}`)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Button("A")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onClick(() =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count = 0;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Button("B")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onClick(() =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">for (let i = 0; i &lt; 1000; i++) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count = i;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">for (let i = 1000; i &gt; 0; i--) {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count = i;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count--;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Button("C")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onClick(() =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.value = 100;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">Button("D")</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">.onClick(() =&gt; {<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">setInterval(()=&gt;{<!-- --></span></p> 
<p style="text-align:justify;"><span style="color:#000000;">this.count++;</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}, 1000)</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">})</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">}</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">A.B</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">B.D</span></p> 
<p style="text-align:justify;"><span style="color:#75bd42;">C.A</span></p> 
<p style="text-align:justify;"><span style="color:#000000;">D.C</span></p>
                